برنامه چت iOS 12 مانند WhatsApp و Viber [ویدئو]

iOS 12 Chat Application like WhatsApp and Viber [Video]

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: در اپلیکیشن چت iOS12، قصد داریم اپلیکیشن‌های iOS را در دنیای واقعی بسازیم. و وقتی می گوییم دنیای واقعی، منظورمان این است که می توانید هر روز از این برنامه برای برقراری ارتباط با دوستان و خانواده استفاده کنید! برخلاف بسیاری از دوره‌های دیگر، ما به شما آموزش می‌دهیم که برنامه‌های کامل دنیای واقعی بسازید. پس از پایان دوره، برنامه ای خواهید داشت که آماده ارسال در اپ استور است. این برنامه چت iOS12 می تواند به راحتی جایگزین برنامه چت اصلی iOS یا WhatsApp شما شود. تمام عملکردهایی که واتس اپ ارائه می دهد را خواهد داشت. آنچه برنامه ما شامل خواهد شد: • چت یک به یک • چت های گروهی • پیام های چندرسانه ای (عکس، ویدئو، صدا، مکان) • رمزگذاری کامل پایان به انتها • اطلاعیه های فشار • تابع تماس • CallKit • PushKit • احراز هویت کاربر Firebase • ذخیره سازی Firebase • Firebase firestore (پایگاه داده بیدرنگ جدید از Firebase) • احراز هویت شماره تلفن • نمایش UICollection سفارشی • UITableviews سفارشی • OneSignal •سینچ • کنترل منبع Git برنامه ما شامل بسیاری از موضوعات دیگر است. گنجاندن همه آنها در اینجا غیرممکن است. ویدیوی برنامه چت iOS12 یک دوره آموزشی سطح مبتدی نیست. شما باید از قبل راه خود را در مورد Xcode بدانید. شما باید دانش اولیه Swift و ساخت اپلیکیشن داشته باشید. ما قصد داریم از صفر شروع کنیم و برنامه را با هم بسازیم. تمامی دارایی ها توسط ما تامین خواهد شد. نویسنده هر خط کد را تایپ کرده و توضیح می دهد. طول دوره حدودا 35 ساعت است. و تا پایان کار، شما چیزهای جدید زیادی یاد خواهید گرفت، حتی اگر از قبل یک توسعه دهنده با تجربه iOS باشید. همه فایل‌های کد در https://github.com/PacktPublishing/iOS-12-Chat-Application-like-WhatsApp-and-Viber قرار داده شده‌اند. برنامه کامل از تکنیک‌های ارائه‌شده در این دوره برای ایجاد ایده‌های خود در ساخت برنامه‌های وب جالب و کاربردی استفاده کنید اگر یک توسعه‌دهنده متوسط ​​iOS هستید و می‌خواهید مهارت‌های توسعه اپلیکیشن در دنیای واقعی خود را به سطح بالاتری ببرید، این دوره برای شما مناسب است. ساخت یک شبیه‌سازی پیام‌رسان واتس‌اپ * ایجاد قابلیت چت گروهی * افزودن قابلیت اشتراک‌گذاری پیام چندرسانه‌ای (عکس، ویدئو، صدا و مکان) * ساخت رمزگذاری کاملاً سرتاسر

سرفصل ها و درس ها

شروع شدن Getting started

  • دریافت xCode Getting the xCode

نمای خوش آمدید Welcome View

  • راه اندازی رابط کاربری Setting up the user interface

  • اتصال UI با کد Connecting UI with code

  • اضافه کردن کوکوپودها Adding cocoapods

  • ایجاد پروژه firebase Creating firebase project

  • افزودن دارایی به پروژه Adding Assets to project

  • ورود و ثبت نام توابع کاربر Login and Register user functions

  • عملکرد کاربر ورود به سیستم Login User function

  • ثبت تابع کاربر قسمت 1 Register user function part 1

نمای ثبت نام را تمام کنید Finish registration view

  • پایان ثبت نام کاربر (ایجاد نمایه) رابط کاربری Finish registering user (creating profile) User interface

  • اتصالات نمای نمایه Profile view connections

  • از نمای خوش آمدگویی به نمای نمایه بروید Segue from Welcome view to Profile view

  • عملکرد دکمه لغو در نمای نمایه Cancel button function in profile view

  • عملکرد دکمه انجام شد Done Button functionality

  • ثبت نام کاربر Register User

  • عملکرد ثبت نام را تمام کنید Finish registration function

  • اولین کاربران را در firebase ذخیره کنید Save first users to firebase

  • ثبت نام کاربر Registering user

  • تست عملکرد ورود به سیستم Testing login function

  • پیاده سازی autologin Implementing autologin

  • کاربر را از سیستم خارج کنید Log out user

  • ایجاد کاربران بیشتر Creating more users

نمایش کاربران از firebase Displaying users from firebase

  • Users Table View Controller رابط کاربری Users Table View Controller User interface

  • سلول نمای جدول سفارشی برای قسمت 1 کاربران Custom table view cell for users' part 1

  • سلول نمای جدول سفارشی برای قسمت 2 کاربران Custom table view cell for users' part 2

  • قسمت 1 کد کنترلر نمای جدول کاربران Users Table View Controller code part 1

  • کد کنترلر نمای جدول کاربران قسمت 2 (جستجوی کاربران) Users Table View Controller code part 2 (Search users)

  • بارگذاری عملکرد کاربران قسمت 1 Load users function part 1

  • بارگذاری عملکرد کاربران قسمت 2 Load users function part 2

  • عملکرد کاربران بارگذاری قسمت 3 Load users function part 3

  • تنظیم عناوین بزرگ برای چت Setting Big titles for chats

  • جستجوی کاربران قسمت 1 Search Users part 1

  • جستجوی کاربران قسمت 2 Search Users part 2

  • جستجوی کاربران قسمت 3 Search Users part 3

  • جستجوی کاربران قسمت 4 Search Users part 4

  • جستجوی کاربران قسمت 5 رفع خطاها Search Users part 5 fix errors

کنترلر نمای نمایه Profile View Controller

  • رابط کاربری نمایش نمایه Profile View User Interface

  • اتصالات نمای پروفایل قسمت 1 Profile view connections part 1

  • اتصالات نمای پروفایل قسمت 2 Profile view connections part 2

  • نمایه اتصالات قسمت 3 به روز رسانی وضعیت بلوک Profile view connections part 3 update block status

  • مسدود کردن عملکرد کاربر Block user function

  • تغییر ساختار فایل/پوشه Changing file/folder structure

چت های اخیر Recent Chats

  • شروع چت خصوصی Starting Private chat

  • ایجاد چت های اخیر قسمت 1 Create Recent chats part 1

  • ایجاد چت های اخیر قسمت 2 Create Recent chats part 2

  • ذخیره اولین چت اخیر در firestore Saving first recent chat to firestore

  • سلول سفارشی گپ های اخیر Recent chats custom cell

  • پیاده سازی کد برای سلول سفارشی قسمت 1 Implementing code for custom cell part 1

  • پیاده سازی کد برای سلول سفارشی قسمت 2 Implementing code for custom cell part 2

  • پیاده سازی کد برای سلول سفارشی قسمت 3 Implementing code for custom cell part 3

  • پیاده سازی کد برای سلول سفارشی قسمت 4 Implementing code for custom cell part 4

کنترلر نمای چت های اخیر Recent Chats view controller

  • کنترلر نمای چت (عملکردهای نمای جدول) Chats view controller (table view functions)

  • کنترلر نمای چت (در حال بارگیری چت های اخیر) Chats view controller (Loading recent chats)

  • کنترلر نمای چت (نمایش اولین چت اخیر) Chats view controller (Display first recent chat)

  • نمای هدر سفارشی برای دکمه چت گروهی Custom header view for group chat button

  • عملکرد ضربه زدن آواتار اخیر Recent avatar tap function

  • جستجوی چت های اخیر Searching recent chats

  • دکمه‌های حذف و بی‌صدا برای چت‌های اخیر Delete and Mute buttons for recent chats

  • حذف اجرای تابع Delete function implementation

  • راه اندازی مجدد چت موجود Restarting existing chat

کنترلر نمای چت Chat view Controller

  • اجرای قسمت کنترلر چت نمای Chat view controller part implementation

  • نمایش کنترلر نمای چت (و رفع خطاها) Display chat view controller (and fix errors)

  • تعمیر رابط کاربری آیفون X Fixing UI for iPhone X

  • اضافه کردن دکمه میکروفون و دکمه بازگشت سفارشی Adding microphone button and custom back button

  • اجرای عملکرد دکمه ارسال و دکمه لوازم جانبی Implementing send button and accessory button functions

  • نمایش منوی گزینه برای دکمه لوازم جانبی Displaying option menu for accessory button

  • در حال به‌روزرسانی رابط کاربری دکمه ارسال Updating send button UI

  • تابع ارسال پیام Send Message function

کلاس پیام خروجی Outgoing message Class

  • پیام خروجی قسمت 1 Outgoing Message part 1

  • پیام خروجی قسمت 2 Outgoing Message part 2

  • ارسال پیامک Send text message

  • ذخیره اولین پیامک در firestore Saving first text message to firestore

  • کلاس پیام ورودی (پیام های متنی) Incoming message class (text messages)

بازگشت به کنترلر نمای چت Back to chats view controller

  • در حال بارگیری چت ها قسمت 1 Loading chats part 1

  • در حال بارگیری چت ها قسمت 2 Loading chats part 2

  • عملکرد درج پیام ها Insert messages function

  • درج پیام های بارگذاری شده اولیه Inserting initial loaded messages

  • توابع JSQMessages DataSource JSQMessages DataSource functions

  • مهر زمان پیام ها و وضعیت تحویل قسمت 1 Timestamping messages and delivery status part 1

  • مهر زمان پیام ها و وضعیت تحویل قسمت 2 Timestamping messages and delivery status part 2

  • رفع وضعیت تحویل Fixing delivery status

  • گوش دادن به چت های جدید Listening for new chats

  • در حال بارگیری چت های قدیمی در پس زمینه Loading old chats in the background

  • بارگیری پیام های قبلی Loading earlier messages

  • تست بارگیری دکمه پیام قبلی Testing load earlier message button

  • هدرهای سفارشی برای نمای چت Custom headers for chat view

  • تنظیم هدرهای سفارشی Setting the custom heders

  • تنظیم قابلیت withUser برای چت ما Setting withUser functionality for our chat

  • اجرای آزمایشی برای بررسی هدرهای سفارشی Test run to check custom headers

  • دسته دوربین و کنترلر انتخابگر تصویر Camera class and image picker controller

  • به روز رسانی مجوزها در info.plist updating permissions in info.plist

  • عملکرد پیام تصویری ارسال کنید Send picture message function

  • ارسال اولین پیام تصویری Sending first picture message

  • دانلود تصویر قسمت 1 Download Image part 1

  • دانلود تصویر قسمت 2 Download Image part 2

  • ایجاد تصویر عکس JSQ Creating JSQ photo image

  • ایجاد پیام عکس Creating Photo Message

  • اجرای آزمایشی برای دریافت اولین پیام تصویری Test run to receive first picture message

پیام های ویدیویی Video Messages

  • در حال آپلود فایل ویدیویی Uploading video file

  • راه اندازی پیام ویدیویی Initializing video message

  • عملکرد ارسال پیام ویدیویی send video message function

  • ارسال اولین پیام ویدیویی ما Sending our first video message

  • دانلود ویدیو downloading video

  • کلاس پیام ویدیویی قسمت 1 Video Message class part 1

  • کلاس پیام تصویری قسمت 2 Video Message class part 2

  • اجرای آزمایشی برای دریافت اولین پیام ویدیویی Test run to get first video message

  • پخش پیام ویدیویی Play video message

  • نمایش پیام تصویری در نمای جداگانه Showing picture message on separate view

پیام های صوتی Audio Messages

  • ارسال پیام صوتی Upload audio message

  • AudioRecorderViewController AudioRecorderViewController

  • ارائه ضبط صوت VC Presenting audio recorder VC

  • ارسال اولین پیام صوتی Sending first audio message

  • در حال دانلود صدا Downloading audio

  • اجرای آزمایشی برای نمایش پیام صوتی Test run to display audio message

پیام های موقعیت مکانی Location messages

  • راه‌اندازی مدیر مکان قسمت 1 Initializing location manager part 1

  • راه‌اندازی مدیر مکان قسمت 2 Initializing location manager part 2

  • بررسی اینکه آیا مکان در دسترس است یا خیر Checking if location is available

  • راه اندازی پیام مکان Initializing location message

  • ارسال اولین پیام موقعیت مکانی Sending first location message

  • ایجاد پیام موقعیت مکانی ورودی Create incoming location message

  • دریافت و نمایش پیام موقعیت مکانی Receive and display location message

  • رابط کاربری کنترلر Map View Map View controller UI

  • اتصالات نمای نقشه Map view connections

در حال به روز رسانی وضعیت خواندن پیام Updating message read status

  • گوش دادن به پیام های به روز شده Listening for updated messages

  • ذخیره وضعیت خواندن در firestore Saving read status to firestore

  • اجرای آزمایشی برای مشاهده وضعیت خواندن Test run to see read status

نشانگر تایپ Typing indicator

  • ایجاد ناظر تایپ Create typing observer

  • شروع به توقف تایپ شمارنده کنید Start stop typing counter

  • آزمایش نشانگر تایپ Typing indicator test run

  • شنوندگان را از نمای چت حذف کنید Remove listeners from chat view

آواتارهای چت Chat avatars

  • نمایش آواتارها قسمت 1 Showing avatars part 1

  • نمایش آواتارها قسمت 2 Showing avatars part 2

  • JSQAvatarDataFunction JSQAvatarDataFunction

  • نمایش ProfileView روی آواتار ضربه بزنید Showing ProfileView on avatar tap

نمای مجموعه تصاویر Pictures collection view

  • نمای مجموعه تصاویر رابط کاربری Pictures collection view User Interface

  • کد مشاهده مجموعه تصاویر Pictures collection view code

  • ذخیره پیوندهای پیام رسانه ای در Chat VC Saving media message links in Chat VC

  • نمایش پیام های رسانه ای اجرا شده را آزمایش کنید Test run media messages view

  • رفع خطا در نمای پیام های رسانه ای Error fixing in media messages view

به روز رسانی گفتگوهای اخیر Updating Recent Chats

  • پیشخوان اخیر را تمیز کنید Clean recent counter

  • در حال به روز رسانی آخرین پیام چت اخیر Updating recent chat last message

  • توابع نادیده/باصدا کردن Mute/Unmute functions

  • حذف اخیر کاربران مسدود شده Deleting recents of blocked users

  • بررسی وضعیت مسدود شده در شروع چت Checking blocked status on chat start

  • تست اجرای چت مسدود شده test running blocked chat

  • شروع چت از نمای نمایه Starting chat from profile view

پیام ها را حذف کنید Delete messages

  • عملکرد پیام را حذف کنید Delete message function

  • توابع حذف اجرا را آزمایش کنید Test run delete functions

تنظیمات نمایش کنترلر Settings View Controller

  • تنظیمات رابط کاربری Settings User Interface

  • تنظیمات اتصالات رابط کاربری Settings User Interface connections

  • راه اندازی سلول کاربر Setting up user cell

  • تغییر وضعیت سوئیچ آواتار Avatar Switch status change

  • ذخیره و بارگیری پیش فرض های کاربر Saving and loading user defaults

  • به یک دوست بگویید و توابع حساب را حذف کنید Tell a friend and delete account functions

  • حذف حساب کاربری Deleting user account

  • عملکرد کش را پاک کنید Clean cache function

  • نمایش نسخه برنامه در تنظیمات Showing the app version in the settings

  • رابط کاربری مسدود شده Blocked Users User Interface

  • کدنویسی کاربران مسدود شده Blocked Users coding

  • رفع انسداد کاربران از نمای مسدود شده Unblocking users from Blocked view

  • کاشت برچسب اعلان در صورت عدم وجود کاربر مسدود شده Sowing notification label if no blocked users

  • رابط کاربری نمایش مجموعه پس‌زمینه Backgrounds collection view UI

  • کدنویسی پس زمینه Backgrounds coding

  • نمای T&C T&C view

  • ویرایش رابط کاربری اطلاعات کاربر Edit user Info UI

  • ویرایش کد کاربر قسمت 1 Edit User code part 1

  • ویرایش کد کاربر قسمت 2 Edit User code part 2

  • تست اجرا ویرایش مشخصات کاربر Test Run Edit User profile

نمای مخاطبین Contacts View

  • نمای مخاطبین (با دارایی ها) Contacts View (with Assets)

  • مخاطبین کد قسمت 2 را مشاهده می کنند Contacts view Code part 2

  • نمای مخاطبین کد قسمت 3 Contacts view Code part 3

  • نمای مخاطبین کد قسمت 4 کاربران را بارگیری می کند Contacts view Code part 4 load users

  • نمایش نمای مخاطبین از نمای چت Showing contacts view from chats view

  • آیا قسمت 1 تماس را انتخاب کردید Did select contact part 1

  • آیا قسمت 2 تماس را انتخاب کردید Did select contact part 2

  • اجرای آزمایشی برای بررسی کاربران نزدیک Test run to check nearby users

چت های گروهی Group Chats

  • ایجاد رابط کاربری گروهی Create group User Interface

  • سلول مشاهده مجموعه سفارشی Custom collection view cell

  • اتصالات گروهی جدید New group connections

  • کلاس گروه جدید قسمت 1 New Group class part 1

  • کلاس گروه جدید قسمت 2 New Group class part 2

  • گروه جدید کلاس قسمت 3 گزینه های دوربین را نشان می دهد New Group class part 3 show camera options

  • کلاس گروه جدید قسمت 4 New Group class part 4

  • ایجاد دکمه گروه قسمت 1 Create group button part 1

  • کلاس گروهی Group Class

  • اولین چت گروهی را ایجاد کنید Create first group chat

  • آخرین چت گروهی Group chat recents

  • رفع خطای اخیر گروه Group recent error fix

  • نمایش اطلاعات گروه در چت show group info in the chat

  • رابط کاربری نمای گروهی Group View User interface

  • نمای گروهی کد قسمت 1 Group view Code part 1

  • نمای گروهی کد قسمت 2 Group view Code part 2

  • دعوت از کاربران برای مشاهده قسمت 1 Invite users view part 1

  • دعوت از کاربران برای مشاهده قسمت 2 Invite users view part 2

  • دعوت از کاربران برای مشاهده قسمت 3 Invite users view part 3

  • ارائه نمای دعوت از کاربران Presenting Invite users View

  • دکمه انجام شد در نمای دعوت Done button in Invite view

  • به روز رسانی نام گروه و آواتار Updating group name and avatar

  • نمایش پس‌زمینه چت Showing chat background

  • تنظیم اندازه تصویر پس زمینه Fixing background image size.

  • دارایی های جدید برای تصاویر پس زمینه New assets for background images

رمزگذاری Encryption

  • رمزگذاری Encryption

  • ارسال پیام های رمزگذاری شده Sending Encrypted Messages

  • ارسال اطلاعات خطای پیام های رمزگذاری شده Sending encrypted messages error information

کتابخانه Image Picker Image Picker library

  • انتخابگر تصویر (تعمیر کتابخانه) Image picker (fixing the library)

  • ذخیره کاربر با تصویر آواتار Saving User with Avatar image

  • ویرایش تصویر آواتار کاربر Editing user's avatar image

  • آواتارهای گروهی Group Avatars

Push Notifications Push Notifications

  • ایجاد گواهی نامه های فشار اعلان Creating push notification certificates

  • برنامه OneSignal ایجاد کنید Create OneSignal Application

  • اتصال OneSignal SDK Connecting OneSignal SDK

  • OneSignal را راه اندازی کنید و PushID را ذخیره کنید Start OneSignal and save PushID

  • ذخیره Push ID در ورود کاربر Saving Push ID on user login

  • اعلان های تست Testing Notifications

  • ذخیره Push ID در firestore Saving Push Id to firestore

  • عملکردهای Push Notification Push Notification functions

  • دریافت اولین اعلان فشار Receiving 1st push notification

  • رفع اشکال Push Notification Push Notification bug fix

  • به روز رسانی وضعیت آنلاین کاربر Updating user online status

نمای تماس Call View

  • رابط کاربری نمایش تماس Call View User Interface

  • تماس با کلاس قسمت 1 Call Class part 1

  • تماس با کلاس قسمت 2 Call class part 2

  • تماس با کلاس قسمت 3 Call Class part 3

  • تلفن تماس سفارشی Custom Call Cell

  • TableView قسمت 1 را فراخوانی کنید Call TableView part 1

  • Call tableview قسمت 2 (جستجوی تماس ها) Call tableview part 2 (searching calls)

  • مشاهده جدول تماس قسمت 3 (بارگیری تماس ها) Call tableview part 3 (load calls)

  • در حال ذخیره اولین تماس Saving 1st call

  • در حال حذف تماس ها Deleting calls

زنگ زدن Call

  • نصب Sinch Installing Sinch

  • Sinch را راه اندازی کنید و برنامه sinch را ایجاد کنید Init Sinch and create sinch App

  • گواهی VOIP ایجاد کنید Create VOIP certificate

  • Sinch Managed Push Sinch Managed Push

  • ارائه اعلان تماس از دست رفته Presenting missed call notification

  • ثبت نام برای اطلاعیه های PKPush Registering for PKPush notifications

  • نمایندگان اطلاع رسانی از راه دور Remote notification delegates

  • تماس با رابط کاربری Call User interface

  • رفع مشکل RNCryptor RNCryptor Fix

  • قسمت 1 کنترلر Call View Call View Controller part 1

  • قسمت 2 کنترلر Call View Call view controller part 2

  • قسمت 3 Call View Controller Call View Controller part 3

  • قسمت 4 کنترلر Call View Call view controller part 4

  • قسمت 5 کنترلر Call View Call view controller part 5

  • نمایش صفحه تماس Showing call screen

  • تماس با کاربر دیگر Caling other user

  • تعداد نشان Badge count

  • نمایش تعداد نشان Showing badge count

  • کلیدهای اعلان تماس SIN SIN call notification keys

احراز هویت موبایل Mobile Authentication

  • رابط کاربری احراز هویت موبایل Mobile Authentication User interface

  • کد احراز هویت موبایل قسمت 1 Mobile Auth code part 1

  • کد احراز هویت موبایل قسمت 2 Mobile Auth code part 2

  • آماده شدن برای اجرا در دستگاه Preparing to run on device

  • ثبت نام کاربر در دستگاه Registering user on device

  • ایجاد اولین کاربر با احراز هویت تلفن Creating first user with phone authentication

CallKit و به روز رسانی CallKit and Updates

  • به روز رسانی به CallKit و رفع افزایش فشار Updating to CallKit and Push increment fix

نمایش نظرات

Packtpub یک ناشر دیجیتالی کتاب‌ها و منابع آموزشی در زمینه فناوری اطلاعات و توسعه نرم‌افزار است. این شرکت از سال 2004 فعالیت خود را آغاز کرده و به تولید و انتشار کتاب‌ها، ویدیوها و دوره‌های آموزشی می‌پردازد که به توسعه‌دهندگان و متخصصان فناوری اطلاعات کمک می‌کند تا مهارت‌های خود را ارتقا دهند. منابع آموزشی Packtpub موضوعات متنوعی از جمله برنامه‌نویسی، توسعه وب، داده‌کاوی، امنیت سایبری و هوش مصنوعی را پوشش می‌دهد. محتوای این منابع به صورت کاربردی و به‌روز ارائه می‌شود تا کاربران بتوانند دانش و توانایی‌های لازم برای موفقیت در پروژه‌های عملی و حرفه‌ای خود را کسب کنند.

برنامه چت iOS 12 مانند WhatsApp و Viber [ویدئو]
جزییات دوره
31 h 55 m
255
Packtpub Packtpub
(آخرین آپدیت)
از 5
ندارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Frahaan Hussain Frahaan Hussain

مدیر عامل و توسعه دهنده شرکت Sonar Systems من مدیر عامل شرکت Sonar Systems هستم که رهبر جهانی در زمینه مواد آموزشی برای موتور بازی Cocos2d-x ، یکی از بهترین و محبوب ترین موتورهای بازی در جهان است. با سالها تجربه برنامه نویسی و اجرای یک بستر آموزش آنلاین (یادگیری Sonar) می توانم از برنامه نویسی های جدید مانند شما کمک و پشتیبانی کنم. من همچنین یک مدرس دانشگاه هستم که موضوعات مختلفی را در برنامه نویسی بازی ها از طراحی بازی تا برنامه نویسی OpenGL Shader تدریس می کنم. من همچنین نویسنده منتشر شده ای در زمینه طراحی بازی ها هستم و به زودی منتشر می شود Responsive Web Design. من تمام جنبه های لازم برای آموزش و الهام گرفتن را دارم.

David Kababyan David Kababyan

توسعه دهنده چند رسانه ای